Introduction to software Engineering and software process model Software Requirements Engineering and Analysis Estimation and Scheduling Design Engineering Risks and Configuration Management Software Testing

Introduction

Modelling Requirement Engineering

Establishing the Groundwork

Identifying Stakeholders

Recognizing Multiple viewpoint

Working towards collaboration

Ashking the first questions

Eliciting Requirement

Collaborative Requirement Gathering

Usage scenarios

Elicitation Work Product

Developing Use Cases

Building the requirements model

Elements of the Requirements Model

Negotiating requirements

Validating Requirement

Understanding and developing effective use cases is essential in software development as it helps capture how users interact with the system under various conditions. Let's dive into the concepts presented in the text and explain them in a simple and engaging manner using examples.


1. What is a Use Case?


A use case is like a contract that describes how a system behaves when responding to a request from a user. It tells a story about how an end user interacts with the system in specific situations. This story can be in the form of narrative text, task outlines, templates, or diagrams, all of which depict the software from the user's perspective.


2. Actors in Use Cases:


The first step in creating a use case is identifying the actors involved. Actors are the different people or devices that interact with the system. They represent the roles users play when using the system. Actors can be primary or secondary, depending on their level of interaction with the software.


Example:


Consider a simple home security system called SafeHome. The primary actors in this system could be the homeowner (user), setup manager (also the homeowner but in a different role), sensors (devices), and the monitoring and response subsystem (central station).


3. Developing Use Cases:


Once actors are identified, use cases can be developed to describe their interactions with the system. Each use case should answer several key questions:


  • Who are the primary and secondary actors?
  • What are the actor's goals?
  • What preconditions must exist before the story begins?
  • What tasks does the actor perform?
  • What exceptions or variations are possible?
  • What information does the actor need from the system?

  • Example:


    For SafeHome, one use case could be "System Activation" performed by the homeowner. It involves the homeowner observing the control panel, entering a password, selecting "stay" or "away" mode, and observing the system's response.


    4. Detailed Use Case Descriptions:


    While basic use cases provide a high-level overview, detailed descriptions offer more depth. A template-based approach can be used to describe each step of the interaction, including preconditions, triggers, scenarios, exceptions, and priorities.


    Example:


    For the "System Activation" use case, a detailed description might include steps such as observing the control panel, entering the password, selecting the mode, and observing the alarm light. It also addresses exceptions like incorrect passwords or system readiness issues.


    5. Visual Representation:


    Use cases can be visually represented using diagrams, such as Unified Modeling Language (UML) diagrams. These diagrams show actors as stick figures and use cases as ovals, helping to visualize the interactions between actors and the system.


    Example:


    In a meeting discussing SafeHome, a use case diagram could show the home security function as a big box with ovals representing different scenarios, like system activation or panic button usage.


    Conclusion:


    Developing effective use cases involves identifying actors, defining their interactions with the system, and detailing these interactions through narratives or diagrams. Use cases help ensure that software development meets user needs and requirements effectively.

    Software


    Software refers to the set of programs, data, and instructions that enable computers to perform specific tasks or functions. It encompasses applications, operating systems, and utilities designed to fulfill user needs, enhancing productivity, communication, entertainment, and virtually all aspects of modern life through computational processes and data manipulation.


    Software Engineering


    Software Engineering is the disciplined application of principles, methods, and tools to develop, test, deploy, and maintain high-quality software systems. It involves systematic approaches to problem-solving, project management, and teamwork, aiming to meet user needs efficiently while adhering to standards and best practices throughout the software development lifecycle.